package wodegua.d29_多线程;

/**
 * 什么是线程?
 * 线程(Thread)是一个程序内部的一条执行流程。
 * 程序中如果只有一条执行流程，那这个程序就是单线程的程序。
 *
 * 多线程是什么?
 * 多线程是指从软硬件上实现的多条执行流程的技术(多条线程由CPU负责调度执行)
 * 多线程用在哪里，有什么好处
 * 再例如:消息通信、淘宝、京东系统都离不开多线程技术。
 *
 * 如何在程序中创建出多条线程?
 * Java是通过java.lang.Thread 类的对象来代表线程的,
 *
 * Thread提供了很多与线程操作相关的方法
 * Thread提供的常用方法
 * public void run()    线程的任务方法
 * public void start()      启动线程
 * public String getName()      获取当前线程的名称，线程名称默认是Thread-索引
 * public void setName(String name)     为线程设置名称
 * public static Thread currentThread()     获取当前执行的线程对象
 * public static void sleep(long time)      让当前执行的线程休眠多少毫秒后，再继续执行
 * public final void join()...      让调用当前这个方法的线程先执行完!
 *
 * Thread提供的常见构造器
 * public Thread(String name)       可以为当前线程指定名称
 * public Thread(Runnable target        封装Runnable对象成为线程对象
 * public Thread(Runnable target,String name)      封装Runnable对象成为线程对象，并指定线程名称
 *
 * Thread其他方法的说明
 * Thread类还提供了诸如:yield、interrupt、守护线程、线程优先级等线程的控制方法，在开发
 * 中很少使用，这些方法会后续需要用到的时候再讲解。
 */
public class d1_Thread {
    public static void main(String[] args) throws Exception {
        Thread t1 = new MyThread("1号线程");
//        t1.setName("1号线程");
        t1.start();
        t1.join();

        Thread t2 = new MyThread("2号线程");
//        t2.setName("2号线程");
        t2.start();
        t2.join();

        Thread t3 = new MyThread("3号线程");
        t3.start();
        t3.join();

        Thread m = Thread.currentThread();
        m.setName("main线程");
        for (int i = 1; i <= 5; i++) {
            if (i == 3) {
                Thread.sleep(5000);
            }
            System.out.println(m.getName() + "执行====>"+i);
        }
    }
}
